package part12cas;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @description: cas 比较并交换，是一种乐观锁，如果期望值和真实值相等，则交换，否则不交换，不阻塞，不加锁
 * 原子类 => UnSafe => CAS 底层思想
 * @author: zhang hang
 * @date: 2024/3/24 16:47.
 * @version: 1.0
 */
public class CASTest01 {

    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(5);
        // main do somethings...
        // 期望的是5，后面改为 2020 ， 所以结果为 true，2020
        System.out.println(atomicInteger.compareAndSet(5, 2020) + "=>" + atomicInteger.get());
        // 期望的是5，后面改为 1024 ， 所以结果为 false，2020
        System.out.println(atomicInteger.compareAndSet(5, 1024) + "=>" + atomicInteger.get());

        AtomicInteger atomicInteger2 = new AtomicInteger(5);
        System.out.println(atomicInteger2.getAndIncrement());
    }

}
